<?php
namespace App\Admin\Forms;

use Dcat\Admin\Models\Administrator;
use Dcat\Admin\Traits\LazyWidget;
use Dcat\Admin\Widgets\Form;
use Dcat\Admin\Contracts\LazyRenderable;
use App\Models\Device;
use App\Models\Part;
use Illuminate\Support\Facades\Log;

class OwningDevice extends Form implements LazyRenderable
{
    use LazyWidget; // 使用异步加载功能
    protected $title = '<i class="feather icon-link"></i> 所属设备';
    // 处理请求

    public function handle(array $input)
    {
        $id = $this->payload['id'] ?? null;
        $part = Part::query()->find($id);
        
        if ($part) {
            // 直接使用选择的设备ID更新Owning_device字段
            $part->Owning_device = $input['device_id'];
            $part->save();
            
            // 获取当前配件的分类名称
            $categoryName = \App\Models\Category::find($part->Parts_classification)->category ?? '未分类';
            
            // 获取选择的设备信息
            $selectedDevice = Device::find($input['device_id']);
            $deviceInfo = $selectedDevice ? $selectedDevice->Asset_Number : '未知设备';
            
            // 记录日志
            $date = date('Y-m-d');
            $reason = request()->input('分配原因');
            Log::info("所属配件操作 ---> 日期:[{$date}] -- 类型：[{$categoryName}] -- 资产编号：[{$deviceInfo}] -- 分配原因:{$reason}");
            
            return $this->response()->success('所属设备更新成功')->refresh();
        }
        return $this->response()->error('所属设备更新失败');
    }

    public function form()
    {
        // 获取所有设备信息，包括设备编号和用户
        $devices = Device::all()->map(function ($device) {
            $categoryName = \App\Models\Category::find($device->Category_id)->category ?? '未分类';
            return [
                'id' => $device->id,
                'text' => $device->Asset_Number . '  -  ' . ($device->User_id ?? '未分配用户') . '  -  ' . $categoryName
            ];
        })->pluck('text', 'id');

        $this->select('device_id', '选择设备')
            ->options($devices)
            ->required()
            ->help('请选择要分配的设备');
        $this->text('分配原因')->required();
    }
}